package ch.penas.business.dom;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.junit.Ignore;

/** @author Daniel */
@Entity
@Table(name = "UTILISATEURS")
public class Utilisateur implements Serializable {

    /** La serialization de la class RechercheOuvrage pour question de securiter. */
	private static final long serialVersionUID = -6146935825517747043L;
	
	/** Le nom de l'utilisateur. */
	@Id
    @Column(name = "NOM")
	private String nom;
	
	/**Le prenom de l'utilisateur. */
    @Column(name = "PRENOM")
	private String prenom;
	
	/** Le natel de l'utilisateur. */
    @Column(name = "NATEL")
	private int natel;
	
	/** Le mail de l'utilisateur. */
    @Column(name = "MAIL")
	private String mail;
	
	/** Constructeur par default de la class Utilisateur. */
	public Utilisateur() { }
	
	/** Red�finition du constructeur de la class Utilisateur.
	 * 
	 * @param aNom est egale au nom de l'utilisateur
	 * @param aPrenom est egale au prenom de l'utilisateur
	 * @param aNatel est egale au natle de l'utilisateur
	 * @param aMail est egale au mail de l'utilisateur
	 */
	public Utilisateur(final String aNom, final String aPrenom, final int aNatel, final String aMail) {
		this.nom = aNom;
		this.prenom = aPrenom;
		this.natel = aNatel;
		this.mail = aMail;
	}
	
	/** Permet d'avoir une sorte de clé primaire.
	 * 
	 * @return hashCode de type string
	 */
	public final String getKey() {
		return String.valueOf(hashCode());
	}
	
    /** Permet de recup�r� la valeur du nom de l'ouvrage.
     * 
     * @return nom
     */
	public final String getNom() {
		return this.nom;
	}
	/** Permet de modifier la valeur du nom de l'ouvrage.
     * 
     * @param aNom est egale au nom de l'ouvrage
     */
	public final void setNom(final String aNom) {
		this.nom = aNom;
	}

    /** Permet de recup�r� la valeur du prenom de l'ouvrage.
     * 
     * @return prenom
     */
	public final String getPrenom() {
		return this.prenom;
	}
	/** Permet de modifier la valeur du prenom de l'ouvrage.
     * 
     * @param aPrenom est egale au prenom de l'ouvrage
     */
	public final void setPrenom(final String aPrenom) {
		this.prenom = aPrenom;
	}

    /** Permet de recup�r� la valeur du natel de l'ouvrage.
     * 
     * @return natel
     */
	public final int getNatel() {
		return this.natel;
	}
	/** Permet de modifier la valeur du natel de l'ouvrage.
     * 
     * @param aNatel est egale au natel de l'ouvrage
     */
	public final void setNatel(final int aNatel) {
		this.natel = aNatel;
	}

    /** Permet de recup�r� la valeur du mail de l'ouvrage.
     * 
     * @return mail
     */
	public final String getMail() {
		return this.mail;
	}
	/** Permet de modifier la valeur du mail de l'ouvrage.
     * 
     * @param aMail est egale au mail de l'ouvrage
     */
	public final void setMail(final String aMail) {
		this.mail = aMail;
	}

	/** Permet de valider si oui/non tout les champse remplie son corecte. */
	public final void validate() {
		if (this.getNom() == null) {
			throw new IllegalArgumentException("Le champ: (Nom)ne doit pas etre vide");
		}
		if (this.getPrenom() == null) {
			throw new IllegalArgumentException("Le champ: (Prenom) ne doit pas etre vide");
		}
		if (this.getNatel() == 0) {
			throw new IllegalArgumentException("Le champ: (Natel) ne doit pas etre vide");
		}
		if (this.getMail() == null) {
			throw new IllegalArgumentException("Le champ: (Mail) ne doit pas etre vide");
		}
	}
}